home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / mint / mntinc20 / math.h < prev    next >
C/C++ Source or Header  |  1992-05-15  |  5KB  |  178 lines

  1. #ifndef _MATH_H
  2. #define _MATH_H
  3.  
  4. /************************************************************************
  5.  *                                    *
  6.  *                N O T I C E                *
  7.  *                                    *
  8.  *            Copyright Abandoned, 1987, Fred Fish        *
  9.  *                                    *
  10.  *    This previously copyrighted work has been placed into the    *
  11.  *    public domain by the author (Fred Fish) and may be freely used    *
  12.  *    for any purpose, private or commercial.  I would appreciate    *
  13.  *    it, as a courtesy, if this notice is left in all copies and    *
  14.  *    derivative works.  Thank you, and enjoy...            *
  15.  *                                    *
  16.  *    The author makes no warranty of any kind with respect to this    *
  17.  *    product and explicitly disclaims any implied warranties of    *
  18.  *    merchantability or fitness for any particular purpose.        *
  19.  *                                    *
  20.  ************************************************************************
  21.  */
  22.  
  23.  
  24. /*
  25.  *  FILE
  26.  *
  27.  *    math.h    include file for users of portable math library
  28.  *
  29.  *  SYNOPSIS
  30.  *
  31.  *    #include <math.h>
  32.  *
  33.  *  DESCRIPTION
  34.  *
  35.  *    This file should be included in any user compilation module
  36.  *    which accesses routines from the Portable Math Library (PML).
  37.  *
  38.  */
  39.  
  40.  
  41. #ifndef _COMPILER_H
  42. #include <compiler.h>
  43. #endif
  44.  
  45. #ifdef __cplusplus
  46. extern "C" {
  47. #endif
  48.  
  49. #ifndef __STRICT_ANSI__
  50. /*
  51.  *    Create the type "COMPLEX".  This is an obvious extension that I
  52.  *    hope becomes a part of standard C someday.
  53.  *
  54.  */
  55.  
  56. typedef struct cmplx {            /* Complex structure */
  57.     double real;            /* Real part */
  58.     double imag;            /* Imaginary part */
  59. } COMPLEX;
  60.  
  61. /* exceptions ++jrb */
  62. typedef enum  {
  63.     DOMAIN      = 1,
  64.     SING        = 2,
  65.     OVERFLOW    = 3,
  66.     UNDERFLOW   = 4,
  67.     TLOSS       = 5,
  68.     PLOSS       = 6
  69. } exception_type;
  70.  
  71. struct exception {
  72.     exception_type    type;    /* exception type */
  73.     char        *name;    /* function in which it occured */
  74.     double        arg1;    /* an arg */
  75.     double        arg2;    /* another arg */
  76.     double        retval; /* val to return */
  77. };
  78.  
  79. #endif /* __STRICT_ANSI__ */
  80.  
  81. extern const double _infinitydf;    /* in normdf.cpp */
  82.  
  83. #define HUGE_VAL  (_infinitydf)
  84. #define HUGE HUGE_VAL
  85.  
  86. #ifdef _M68881
  87. #include <math-68881.h>
  88. #endif
  89.  
  90. #ifdef __GNUC__
  91. # ifndef __cplusplus
  92. #  ifndef max
  93. #   define max(x,y) ({typeof(x) _x=(x); typeof(y) _y=(y); if (_x>_y) _y=_x; _y;})
  94. #   define min(x,y) ({typeof(x) _x=(x); typeof(y) _y=(y); if (_x<_y) _y=_x; _y;})
  95. #  endif
  96. # endif
  97. #endif
  98.  
  99. #ifndef _M68881
  100. __EXTERN double    acos    __PROTO((double));
  101. __EXTERN double asin    __PROTO((double));
  102. __EXTERN double atan    __PROTO((double));
  103. __EXTERN double atanh    __PROTO((double));
  104. __EXTERN double cos    __PROTO((double));
  105. __EXTERN double cosh    __PROTO((double));
  106. __EXTERN double fabs    __PROTO((double));
  107. __EXTERN double dabs    __PROTO((double));
  108.  
  109. __EXTERN double exp    __PROTO((double));
  110. __EXTERN double log    __PROTO((double));
  111. __EXTERN double log10    __PROTO((double));
  112. __EXTERN double fmod    __PROTO((double, double));
  113. __EXTERN double sin    __PROTO((double));
  114. __EXTERN double sinh    __PROTO((double));
  115. __EXTERN double sqrt    __PROTO((double));
  116. __EXTERN double hypot   __PROTO((double, double));
  117. __EXTERN double tan    __PROTO((double));
  118. __EXTERN double tanh    __PROTO((double));
  119. __EXTERN double floor    __PROTO((double));
  120. __EXTERN double ceil    __PROTO((double));
  121. __EXTERN double rint    __PROTO((double));
  122.  
  123. __EXTERN double acosh    __PROTO((double));
  124. __EXTERN double asinh    __PROTO((double));
  125. __EXTERN double atan2    __PROTO((double, double));
  126. __EXTERN double pow    __PROTO((double, double));
  127. #endif
  128.  
  129. #ifndef __STRICT_ANSI__
  130.  
  131. #ifdef _M68881
  132. #  define dabs(x) fabs(x)
  133. #endif
  134.  
  135. __EXTERN double copysign    __PROTO((double, double));
  136. __EXTERN int matherr    __PROTO((struct exception *));
  137. __EXTERN double cabs    __PROTO((COMPLEX));
  138. __EXTERN COMPLEX cmult    __PROTO((COMPLEX, COMPLEX));
  139. __EXTERN COMPLEX csqrt    __PROTO((COMPLEX));
  140. #ifndef __GNUG__
  141. __EXTERN COMPLEX clog    __PROTO((COMPLEX));
  142. #endif
  143. __EXTERN COMPLEX cacos    __PROTO((COMPLEX));
  144. __EXTERN COMPLEX cadd    __PROTO((COMPLEX,COMPLEX));
  145. __EXTERN COMPLEX casin    __PROTO((COMPLEX));
  146. __EXTERN COMPLEX catan    __PROTO((COMPLEX));
  147. __EXTERN COMPLEX ccosh    __PROTO((COMPLEX));
  148. __EXTERN COMPLEX crcp    __PROTO((COMPLEX));
  149. __EXTERN COMPLEX csinh    __PROTO((COMPLEX));
  150. __EXTERN COMPLEX ctan    __PROTO((COMPLEX));
  151. __EXTERN COMPLEX ctanh    __PROTO((COMPLEX));
  152. __EXTERN COMPLEX cexp    __PROTO((COMPLEX));
  153. __EXTERN COMPLEX ccos    __PROTO((COMPLEX));
  154. __EXTERN COMPLEX csin    __PROTO((COMPLEX));
  155. __EXTERN COMPLEX cdiv    __PROTO((COMPLEX, COMPLEX));
  156. __EXTERN COMPLEX csubt    __PROTO((COMPLEX,COMPLEX));
  157.  
  158. __EXTERN int pmlcfs    __PROTO((int, int));
  159. __EXTERN int pmlcnt    __PROTO((void));
  160. __EXTERN int pmlerr    __PROTO((int));
  161. __EXTERN int pmllim    __PROTO((int));
  162. __EXTERN int pmlsfs    __PROTO((int, int));
  163. __EXTERN double poly    __PROTO((int, double *, double));
  164.  
  165. #endif /* __STRICT_ANSI__ */
  166.  
  167. #ifndef _M68881
  168. __EXTERN double modf    __PROTO((double, double *));
  169. __EXTERN double ldexp    __PROTO((double, int));
  170. __EXTERN double frexp    __PROTO((double, int *));
  171. #endif /* !_M68881 */
  172.  
  173. #ifdef __cplusplus
  174. }
  175. #endif
  176.  
  177. #endif /* _MATH_H */
  178.